#!/bin/bash 
# 自定义名称
PACKAGE_NAME="xq-kylin-tools"

# 设置命令标题名称
echo -ne "\e]2;银河麒麟V10Sp1工具箱\a"

# 确保脚本在终端中运行
if [ -z "$TERM" ]; then
    # 如果没有终端，尝试启动一个终端来运行脚本
    x-terminal-emulator -e "$0"
    exit 0
fi

# 颜色定义
red='\033[0;31m' 
green='\033[0;32m' 
yellow='\033[0;33m'
blue='\033[0;34m' 
cyan='\033[0;36m'
magenta='\033[0;35m' 
reset='\033[0m'
nc='\033[0m'

# 优化图标路径检查
icon_path="/usr/share/icons/hicolor/48x48/apps/xq-kylin-tools.png"
[[ ! -f "$icon_path" ]] && icon_path=""  # 图标不存在时不显示

# ====================== 通知工具函数 ======================
# 桌面通知与终端提示函数
show_notification() { 
    local title="$1" message="$2" level="$3" icon="${4:-}"
    case "$level" in
        "success") color="$green"; urgency="normal" ;;
        "warning") color="$yellow"; urgency="normal" ;;
        "error")   color="$red"; urgency="critical" ;;
        *)         color="$nc"; urgency="normal" ;;
    esac
    echo -e "\n${color}【$title】${message}${NC}"
    # 发送桌面通知
    if command -v notify-send &> /dev/null; then
        if [[ -n "$icon" && -f "$icon" ]]; then
            notify-send -u "$urgency" -i "$icon" "$title" "$message" 2>/dev/null || true
        else
            notify-send -u "$urgency" "$title" "$message" 2>/dev/null || true
        fi
    fi
}

# ====================== 权限检查与获取函数 ======================
# 错误处理函数 - 防止闪退并提示用户
handle_error() {
    local message="$1"
    echo -e "\n${red}【错误】${message}${NC}"
    show_notification "操作失败" "${message}" "error" "$icon_path"
    read -p "按Enter键继续或关闭窗口..."  # 防止闪退，等待用户确认
}
echo -e "${blue}▶ 正在验证sudo权限，请输入您的密码...${NC}"

if sudo -v; then
    echo -e "\n${green}【成功】sudo权限验证通过，继续执行后续操作${NC}"
else
    echo -e "\n${red}【错误】sudo权限验证失败！原因可能是：${NC}" 
    echo -e "${yellow}1. 当前用户未配置sudo权限"
    echo -e "2. 密码输入错误"
    exit 1
fi

# 用户确认函数：提示用户确认操作（y/n），返回 0（确认）或 1（取消）
confirm_operation() {
    echo -en "${yellow}$1 (y/n): ${reset}"
    read -r response
    [[ "$response" =~ ^[Yy]$ ]] && return 0 || return 1  
}

# ====================== 版本检查 ======================

GITEE_REPO="https://gitee.com/seeker_ok/${PACKAGE_NAME}"
LOCAL_VERSION=$(dpkg-query -W --showformat='${Version}' ${PACKAGE_NAME} 2>/dev/null)

# 获取远程版本号，设置3秒超时
REMOTE_CONTROL=$(curl -sL --connect-timeout 3 --max-time 3 "${GITEE_REPO}/raw/master/DEBIAN/control")

# 检查curl是否成功获取内容
if [ -z "$REMOTE_CONTROL" ]; then
  echo -e "${blue}无法在3秒内连接到远程服务器，跳过版本检查${nc}"
else
  remote_version=$(echo "$REMOTE_CONTROL" | grep 'Version:' | awk '{print $2}')
  
  # 版本比较函数
  version_compare() {
    if [ "$1" = "$2" ]; then
      return 0
    fi
    local IFS=.
    local i ver1=($1) ver2=($2)
    for ((i=${#ver1[@]}; i<${#ver2[@]}; i++)); do
      ver1[i]=0
    done
    for ((i=0; i<${#ver1[@]}; i++)); do
      if [[ -z ${ver2[i]} ]]; then
        ver2[i]=0
      fi
      if ((10#${ver1[i]} > 10#${ver2[i]})); then
        return 1
      fi
      if ((10#${ver1[i]} < 10#${ver2[i]})); then
        return 2
      fi
    done
    return 0
  }

  if version_compare "$LOCAL_VERSION" "$remote_version"; then
    : # 本地版本与远程版本相同，不执行任何操作
  elif [ $? -eq 1 ]; then
    echo -e "${red}本地版本 ${LOCAL_VERSION} 比远程版本 ${remote_version} 新${nc}"
  else
    echo -e "${green}发现${PACKAGE_NAME}有新版本 ${remote_version}，是否更新？[Yy/N]${nc}"
    read -p " " choice
    if [[ "$choice" = "y" || "$choice" = "Y" ]]; then
      deb_url="${GITEE_REPO}/raw/master/${PACKAGE_NAME}_${remote_version}_all.deb"
      x-terminal-emulator -e "bash -c \"
        export DISPLAY='$DISPLAY' XAUTHORITY='$XAUTHORITY';  # 传递环境变量
        echo -e '${green}正在下载并安装新版本,请稍等...${nc}';
        wget -q ${deb_url} -O /tmp/${PACKAGE_NAME}.deb && 
        sudo apt install -y /tmp/${PACKAGE_NAME}.deb && 
        rm -rf /tmp/${PACKAGE_NAME}.deb;
        echo -e '${green}软件已更新至 ${remote_version}，请关闭窗口重新运行${nc}';
        read -p $'${blue} 按任意键关闭此窗口...${nc}' \""
      exit 1
    fi
  fi
fi

# ========================= 菜单体系开始 =========================
# 主菜单：工具箱入口，跳转至各功能模块
main_menu() {
    while true; do
        clear
        echo -e "${blue}=======================  银河麒麟V10Sp1工具箱  ======================${reset}"
        echo -e "${green}╔═══════════════════════════════════════════════════════════════════╗"
        echo -e "║                               主功能菜单                          ║"
        echo -e "╚═══════════════════════════════════════════════════════════════════╝${reset}"       
        echo -e " ${cyan}1)${reset} 显示设置       ——— 多屏、分辨率、亮度、触屏映射配置等相关功能"
        echo -e " ${cyan}2)${reset} 网络设置       ——— 网速控制、DNS优化、Samba共享部署等相关功能"
        echo -e " ${cyan}3)${reset} 系统优化       ——— 系统性能提升、磁盘清理、个性化定制等相关功能"
        echo -e " ${cyan}4)${reset} 系统信息       ——— 查看硬件/系统信息、多屏快捷键指南等相关功能"
        echo -e " ${cyan}5)${reset} 系统修复       ——— 解决图标丢失、登录异常、卸载不全净等相关功能"        
        echo -e " ${cyan}6)${reset} 其他工具       ——— sudo修复、强制删除、打印机、漏洞等相关功能"
        echo -e " ${red}0) 退出工具箱${reset}     ——— 直接退出"      
        echo -e "${blue}$(printf '═%.0s' $(seq 1 68))${reset}"
        echo -en "${yellow}请输入选项编号: ${reset}"
        read -rp "" choice
        case $choice in
            1) echo -e "${green}→ 正在进入显示设置菜单...${reset}";  /opt/apps/xq-kylin-tools/submenu/display_menu ;;
            2) echo -e "${green}→ 正在进入网络设置菜单...${reset}";  /opt/apps/xq-kylin-tools/submenu/network_menu ;;
            3) echo -e "${green}→ 正在进入系统优化菜单...${reset}";  /opt/apps/xq-kylin-tools/submenu/system_optimize_menu ;;
            4) echo -e "${green}→ 正在进入系统信息菜单...${reset}";  /opt/apps/xq-kylin-tools/submenu/system_info_menu ;;
            5) echo -e "${green}→ 正在进入故障修复菜单...${reset}";  /opt/apps/xq-kylin-tools/submenu/system_menu ;;            
            6) echo -e "${green}→ 正在进入其他工具菜单...${reset}";  /opt/apps/xq-kylin-tools/submenu/other_menu ;;
            0) show_notification "系统维护完成" "所有操作已执行完毕，感谢您的使用！" "success" "$icon_path"

                echo -e "${yellow}3秒后自动退出...（按Enter可立即退出）${reset}";
                read -r -t 3 || true;
                exit 0 ;;
                *) echo -e "${red}✗ 无效选择，请输入上面的数字${reset}";
               sleep 0.5 ;;
        esac
    done
}

# ====================== 启动逻辑 ======================
main_menu
sleep 1
